﻿<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<instrumentationManifest
    xmlns="http://schemas.microsoft.com/win/2004/08/events"
    xmlns:win="http://manifests.microsoft.com/win/2004/08/windows/events"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    >
  <instrumentation>
    <events>
      <provider
          guid="{3D46B9FE-2CE2-4833-A55E-A8B92E9D2560}"
          messageFileName="ufxclientsample.sys"
          name="UfxClientSample"
          resourceFileName="ufxclientsample.sys"
          symbol="UfxClientSampleGuid"
          >
        <channels/>
        <keywords>
          <keyword
              mask="0x0000000000000001"
              message="$(string.Keyword.Error)"
              name="Error"
              />
          <keyword
              mask="0x0000000000000002"
              message="$(string.Keyword.Performance)"
              name="Performance"
              />
          <keyword
              mask="0x0000000000000004"
              message="$(string.Keyword.Debug)"
              name="Debug"
              />
          <keyword
              mask="0x0000000000000008"
              message="$(string.Keyword.Registers)"
              name="Registers"
              />
          <keyword
              mask="0x0000000000000010"
              message="$(string.Keyword.Endpoint)"
              name="Endpoint"
              />
        </keywords>
        <tasks>
          <task
              eventGUID="{872c3c43-6899-4f1d-89b8-51a82f6db657}"
              name="Error"
              value="1"
              />
          <task
              eventGUID="{172c3c43-6899-4f1d-89b8-51a82f6db657}"
              name="Debug"
              value="2"
              />
          <task
              eventGUID="{272c3c43-6899-4f1d-89b8-51a82f6db657}"
              name="FailedNtStatus"
              value="3"
              />
          <task
              eventGUID="{372c3c43-6899-4f1d-89b8-51a82f6db657}"
              name="RegisterRead"
              value="4"
              />
          <task
              eventGUID="{472c3c43-6899-4f1d-89b8-51a82f6db657}"
              name="RegisterWrite"
              value="5"
              />
          <task
              eventGUID="{572c3c43-6899-4f1d-89b8-51a82f6db657}"
              name="Transfer"
              value="6"
              />
          <task
              eventGUID="{672c3c43-6899-4f1d-89b8-51a82f6db657}"
              name="EndpointCommand"
              value="7"
              />
        </tasks>
        <templates>
          <template tid="tFailedNtStatus">
            <data
                inType="win:AnsiString"
                name="File"
                outType="xs:string"
                />
            <data
                inType="win:UInt32"
                name="Line"
                />
            <data
                inType="win:UInt32"
                name="Status"
                outType="win:HexInt32"
                />
          </template>
          <template tid="tRegister">
            <data
                inType="win:UInt32"
                name="Offset"
                outType="win:HexInt32"
                />
            <data
                inType="win:UInt32"
                name="Value"
                outType="win:HexInt32"
                />
          </template>
          <template tid="tTransfer">
            <data
                inType="win:AnsiString"
                name="Stage"
                outType="xs:string"
                />
            <data
                inType="win:Pointer"
                name="Endpoint"
                outType="win:HexInt64"
                />
            <data
                inType="win:UInt32"
                name="PhysicalEndpoint"
                />
            <data
                inType="win:Pointer"
                name="Request"
                outType="win:HexInt64"
                />
            <data
                inType="win:Pointer"
                name="Transaction"
                outType="win:HexInt64"
                />
            <data
                inType="win:UInt32"
                name="BytesRequested"
                outType="win:HexInt32"
                />
            <data
                inType="win:UInt32"
                name="BytesProgrammed"
                outType="win:HexInt32"
                />
            <data
                inType="win:UInt32"
                name="BytesTransferred"
                outType="win:HexInt32"
                />
            <data
                inType="win:UInt32"
                name="SgProgrammed"
                />
            <data
                inType="win:UInt32"
                name="SgLength"
                />
          </template>
          <template tid="tEndpointCommand">
            <data
                inType="win:AnsiString"
                name="Name"
                outType="xs:string"
                />
            <data
                inType="win:UInt32"
                name="Endpoint"
                outType="win:HexInt32"
                />
            <data
                inType="win:UInt32"
                name="PhysicalEndpoint"
                outType="win:HexInt32"
                />
            <data
                inType="win:UInt32"
                name="Command"
                outType="win:HexInt32"
                />
            <data
                inType="win:UInt32"
                name="Parameter0"
                outType="win:HexInt32"
                />
            <data
                inType="win:UInt32"
                name="Parameter1"
                outType="win:HexInt32"
                />
            <data
                inType="win:UInt32"
                name="Parameter2"
                outType="win:HexInt32"
                />
          </template>
        </templates>
        <events>
          <event
              keywords="Error"
              level="win:Error"
              message="$(string.Event.FailedNtStatus)"
              opcode="win:Info"
              symbol="FailedNtStatus"
              task="FailedNtStatus"
              template="tFailedNtStatus"
              value="100"
              />
          <event
              keywords="Registers"
              level="win:Verbose"
              message="$(string.Event.RegisterRead)"
              opcode="win:Info"
              symbol="RegisterRead"
              task="RegisterRead"
              template="tRegister"
              value="101"
              />
          <event
              keywords="Registers"
              level="win:Verbose"
              message="$(string.Event.RegisterWrite)"
              opcode="win:Info"
              symbol="RegisterWrite"
              task="RegisterWrite"
              template="tRegister"
              value="102"
              />
          <event
              keywords="Endpoint"
              level="win:Informational"
              message="$(string.Event.Transfer)"
              opcode="win:Info"
              symbol="Transfer"
              task="Transfer"
              template="tTransfer"
              value="200"
              />
          <event
              keywords="Endpoint"
              level="win:Verbose"
              message="$(string.Event.EndpointCommand)"
              opcode="win:Info"
              symbol="EndpointCommand"
              task="Transfer"
              template="tEndpointCommand"
              value="202"
              />
        </events>
      </provider>
    </events>
  </instrumentation>
  <localization>
    <resources culture="en-US">
      <stringTable>
        <string
            id="Keyword.Error"
            value="Error"
            />
        <string
            id="Keyword.Performance"
            value="Performance"
            />
        <string
            id="Keyword.Debug"
            value="Debug"
            />
        <string
            id="Keyword.Registers"
            value="Registers"
            />
        <string
            id="Keyword.Endpoint"
            value="Endpoint"
            />
        <string
            id="Event.FailedNtStatus"
            value="Failed with status %3 in file %1 on line %2"
            />
        <string
            id="Event.RegisterRead"
            value="READ %1 %2"
            />
        <string
            id="Event.RegisterWrite"
            value="WRITE %1 %2"
            />
        <string
            id="Event.Transfer"
            value="TRANSFER %1: %2 (%3), RQ: %4, DMA: %5, BytesReq: %6, BytesProg: %7, BytesTrans: %8, SG: %9/%10"
            />
        <string
            id="Event.EndpointCommand"
            value="COMMAND %1: %2 (%3) -- %4 %5 %6 %7"
            />
      </stringTable>
    </resources>
  </localization>
</instrumentationManifest>
